基本概念
- 客户程序:需要输入文本的程序
- 上下文 Context:每个客户程序里输入的内容是不同的,需要为客户维护输入法状态
- 前端 Frontend:输入法在客户程序中的部分,自身只关注与操作系统交互,并且向服务转发
- 后端 Backend:负责运算的 librime 本身
- 服务 Service:运行起来的后端
- 会话 Session:服务给每个客户建立一个输入法会话。会话就是把一系列按键消息变成文字的问答过程
- 引擎 Engine:会话中为客户程序分配的资源
- 引擎与会话直接交互
- 引擎中包含上下文、输入方案 Schema 和按键 KeyEvent 等对象
- 引擎对外实现封装,对内通过组件化的方式实现可扩展、可配置的目的
- 组件 Component:完成特定功能的对象;为了达到可以在运行时动态配置的目的,采用抽象工厂模式
- 如果只有一种实现方式,就写 C++ 类
- 如果有多种实现方式,就写 Rime 类
- 这个类中包含了一个它的工厂类,可以用于创建
- 在运行时,先通过类别类(如 Processor)获得它的工厂类,然后通过工厂类的获得对象
- 由引擎直接创建并调用的称为框架级组件,分 Processor, Segmentor, Translator 和 Filter,并且需要为每一类组件定义明确的接口。这些框架级组件的工作方式参见 Rime 框架级组件
- 其他组件称为基础组件